package LanQiao;

import java.util.Arrays;
import java.util.Scanner;

public class demo5 {
    /**
     * 和为给定数
     * 　　给出若干个整数，询问其中是否有一对数的和等于给定的数。
     * 输入格式
     * 　　共三行：
     * 　　第一行是整数n(0 < n <= 10,000)，表示有n个整数。
     * 　　第二行是n个整数。整数的范围是在0到30000之间。
     * 　　第三行是一个整数m（0 <= m <= 2^30)，表示需要得到的和。
     * 输出格式
     * 　　若存在和为m的数对，输出两个整数，小的在前，大的在后，中间用单个空
     *
     * 　　格隔开。若有多个数对满足条件，选择数对中较小的数更小的。若找不到
     *
     * 　　符合要求的数对，输出一行No。
     * 　　输入输出样例
     * 　　样例测试点#1
     * 样例输入
     * 4
     *
     * 2 5 1 4
     *
     * 6
     * 样例输出
     * 1 5
     */
    public static int N = 10001;
    public static int []arr = new int[N];
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        for (int i = 0; i < n; i++) {
            arr[i] = sc.nextInt();
        }
        int m = sc.nextInt();
        Arrays.sort(arr);
        int l = 0,r = n-1;
        while (l<r && l<n && r>=0){
            if(arr[l]+arr[r] == m){
                System.out.println(arr[l]+" "+arr[r]);
                return;
            }else if(arr[l]+arr[r]>m){
                r--;
            }else{
                l++;
            }
        }
      System.out.println("NO");
    }
}
